সকেট প্রোগ্রামিং হল একটি নেটওয়ার্ক প্রোগ্রামিং কৌশল যা বিভিন্ন প্রোগ্রাম বা প্রসেসের মধ্যে যোগাযোগ তৈরি করতে ব্যবহৃত হয়। Python এ সকেট প্রোগ্রামিং এর মাধ্যমে দুটি বা তার বেশি সিস্টেমের মধ্যে ডেটা ট্রান্সফার করা সম্ভব। এটি ক্লায়েন্ট-সার্ভার মডেল অনুসরণ করে, যেখানে একটি প্রোগ্রাম (সার্ভার) অন্য একটি প্রোগ্রাম (ক্লায়েন্ট) এর সাথে যোগাযোগ স্থাপন করে।
Python-এ সকেট প্রোগ্রামিংয়ের জন্য socket
নামক বিল্ট-ইন লাইব্রেরি ব্যবহৃত হয়, যা সকেট তৈরি, সংযোগ স্থাপন, ডেটা পাঠানো, গ্রহণ করা ইত্যাদি কাজ পরিচালনা করতে সাহায্য করে।
Python-এ সকেট প্রোগ্রামিং শুরু করার জন্য আপনাকে socket
লাইব্রেরিটি ইমপোর্ট করতে হবে। নিচে Python দিয়ে TCP সকেট সার্ভার এবং ক্লায়েন্ট তৈরি করার উদাহরণ দেওয়া হয়েছে।
একটি TCP সার্ভার ক্লায়েন্টের সাথে সংযোগ স্থাপন করে এবং ক্লায়েন্টের পাঠানো বার্তা গ্রহণ করে সাড়া দেয়।
import socket
# সার্ভারের হোস্ট নাম এবং পোর্ট নম্বর
host = '127.0.0.1'
port = 65432
# সকেট তৈরি করা
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# সকেটটি সুনির্দিষ্ট হোস্ট এবং পোর্টে বেঁধে দেওয়া
server_socket.bind((host, port))
# সকেটটি ক্লায়েন্ট সংযোগের জন্য শুনছে
server_socket.listen()
print("Server listening on", host, ":", port)
# ক্লায়েন্টের সাথে সংযোগ স্থাপন
client_socket, client_address = server_socket.accept()
print(f"Connection established with {client_address}")
# ক্লায়েন্ট থেকে বার্তা গ্রহণ করা
data = client_socket.recv(1024)
print("Received message:", data.decode())
# সার্ভার থেকে ক্লায়েন্টকে সাড়া পাঠানো
client_socket.sendall(b"Hello, Client!")
# সংযোগ বন্ধ করা
client_socket.close()
কোডের ব্যাখ্যা:
bind()
ফাংশন দিয়ে একটি নির্দিষ্ট হোস্ট এবং পোর্ট নম্বর সেট করে।listen()
ফাংশনটি সার্ভারকে ক্লায়েন্টের সংযোগের জন্য প্রস্তুত করে।accept()
ফাংশনটি ক্লায়েন্টের সাথে সংযোগ গ্রহণ করে এবং একটি ক্লায়েন্ট সকেট তৈরি করে।recv()
ফাংশন ক্লায়েন্ট থেকে ডেটা গ্রহণ করে এবং sendall()
ফাংশন ক্লায়েন্টে সাড়া পাঠায়।এখন, TCP ক্লায়েন্ট তৈরি করা হবে, যা সার্ভারের সাথে সংযোগ স্থাপন করবে এবং সার্ভারকে একটি বার্তা পাঠাবে।
import socket
# সার্ভারের হোস্ট নাম এবং পোর্ট নম্বর
host = '127.0.0.1'
port = 65432
# ক্লায়েন্ট সকেট তৈরি করা
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# সার্ভারের সাথে সংযোগ স্থাপন
client_socket.connect((host, port))
# সার্ভারকে বার্তা পাঠানো
message = "Hello, Server!"
client_socket.sendall(message.encode())
# সার্ভার থেকে সাড়া গ্রহণ করা
data = client_socket.recv(1024)
print("Received from server:", data.decode())
# সংযোগ বন্ধ করা
client_socket.close()
কোডের ব্যাখ্যা:
connect()
ফাংশন দিয়ে সার্ভারের সাথে সংযোগ স্থাপন করা হয়।sendall()
ফাংশন ব্যবহার করে ক্লায়েন্ট একটি বার্তা সার্ভারে পাঠায়।recv()
ফাংশন ব্যবহার করে সার্ভার থেকে সাড়া গ্রহণ করা হয়।UDP (User Datagram Protocol) প্রোটোকলটি একটি কানেকশনলেস প্রোটোকল, যা কম দেরিতে ডেটা প্রেরণ করতে সাহায্য করে। UDP সিস্টেমে সংযোগের প্রয়োজন হয় না, তবে এটি ডেটার গ্যারান্টি দেয় না (যেমন, ডেটা হারানো হতে পারে)।
import socket
# সার্ভারের হোস্ট নাম এবং পোর্ট নম্বর
host = '127.0.0.1'
port = 65432
# UDP সকেট তৈরি করা
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# সার্ভারের হোস্ট এবং পোর্টে বেঁধে দেওয়া
server_socket.bind((host, port))
print("UDP Server is listening...")
# ডেটা গ্রহণ করা
data, client_address = server_socket.recvfrom(1024)
print(f"Received message: {data.decode()} from {client_address}")
# সাড়া পাঠানো
server_socket.sendto(b"Hello, Client!", client_address)
import socket
# সার্ভারের হোস্ট নাম এবং পোর্ট নম্বর
host = '127.0.0.1'
port = 65432
# UDP সকেট তৈরি করা
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# সার্ভারে বার্তা পাঠানো
message = "Hello, Server!"
client_socket.sendto(message.encode(), (host, port))
# সার্ভার থেকে সাড়া গ্রহণ করা
data, server_address = client_socket.recvfrom(1024)
print("Received from server:", data.decode())
# সংযোগ বন্ধ করা
client_socket.close()
যেহেতু সকেট প্রোগ্রামিংয়ের মাধ্যমে নেটওয়ার্কের মাধ্যমে ডেটা পাঠানো হয়, সুতরাং নিরাপত্তা অত্যন্ত গুরুত্বপূর্ণ। কিছু নিরাপত্তা কৌশল হল:
Python এর মাধ্যমে সকেট প্রোগ্রামিং খুবই শক্তিশালী একটি কৌশল যা আপনি সার্ভার এবং ক্লায়েন্ট অ্যাপ্লিকেশন তৈরি করতে ব্যবহার করতে পারেন। TCP এবং UDP প্রোটোকল ব্যবহার করে আপনি যোগাযোগ স্থাপন করতে পারবেন এবং ডেটা আদান-প্রদান করতে পারবেন। সঠিকভাবে প্রোগ্রামিং এবং নিরাপত্তা কৌশল ব্যবহার করে এই প্রোগ্রামগুলির কার্যকারিতা এবং সুরক্ষা নিশ্চিত করা সম্ভব।
common.read_more